In the licensing of software for an enterprise, there is a need to issue the customer a license for software that specifies the number of users or simultaneous instances of the software the enterprise is allowed to have. Once the customer has the license for the enterprise, there is a need for the customer to be able to use the enterprise license to activate users/software instances while keeping the users/software instances within the limits of the enterprise license. This needs to be performed in the customer's environment without communication with the software vendor so that the customer can operate autonomously within the bounds of the enterprise license. For example, if the enterprise license allows 100 copies of the software to run at a time, the customer needs to be allowed to activate 100 instances of the software while being blocked from activating the 101st instance of software. For many applications, constant network communication with the enterprise license server is not possible or practical. Therefore, the licenses generated for users/software instances need to be persistent and continue to operate even when contact with the enterprise license server is lost or otherwise not available. This is the case with telecommunications enterprise-wide licensing where the licensing of mission critical voice communication systems needs to continue unabated even if communication to the enterprise license server is lost.
One licensing method is described in copending U.S. patent applications entitled “Securing Feature Activation in a Telecommunication System”, Ser. No. 09/357,679, filed Jul. 20, 1999, to Serkowski; “Securing Feature Activation in a Telecommunication System”, Ser. No. 09/357,679, filed Jul. 20, 1999, to Serkowski; “License Modes in Call Processing”, Ser. No. 10/232,508, filed Aug. 30, 2002; “Remote Feature Activator Feature Extraction”, Ser. No. 10/232,906, filed Aug. 30, 2002; “Flexible License File Feature Controls”, Ser. No. 10/231,999; “License File Serial Number Tracking”, Ser. No. 10/232,507; “Licensing Duplicated Systems”, Ser. No. 10/231,957; “Software Licensing for Spare Processors”, Ser. No. 10/232,647; “Temporary Password Login”, Ser. No. 10/387,182; and “Ironclad Notification of License Errors”, Ser. No. 10/405,176; each of which is incorporated herein by this reference, and is currently being implemented commercially in Communication Manager™ by Avaya Inc.™ A valid license file is required to run a computational component. The license file contains a hardware serial number that must be present on the hardware that is to execute the licensed software for the license to be valid and the software to be executable. This hardware serial number confirms that a single license is used to enable a single instance of software. This licensing method requires the licensed application to be in continuous contact with the enterprise license server. The license server issues a license that must be updated or checked periodically (such as once every 10 minutes).
There are different solutions that may be employed when a license fails an update or check. If the license update or check is not possible (such as due to loss of network communications), the license server may release the license and make the user seat/software instance available for use by another user. On the application side, if the license update or check fails, the application either continues to run with an alarm or stops operation. If the application continues to run without a license update or check, then there is a potential for license abuse since the same license can be used multiple times. If the application ceases to operate due to a failed license update or check, the software user is denied service, even though a seat/software instance is available. Neither of these solutions is satisfactory in most situations.
In the licensing of software for an enterprise, there is a further need to track licensing information at both the enterprise and individual software element levels. For example, the total number of ports for a telecommunications system may be tracked at the enterprise level, whereas platform type, serial number, and individual software feature right-to-use settings may need to be tracked at the lower level of an individual software element. In addition to tracking licensing information at both the enterprise and software element levels, a method is needed for establishing a relationship between the individual software elements and the license record for the enterprise to which they belong. For maximum flexibility in the software licensing options that a software company may want to offer their customers, software licensing parameters (e.g., software release, individual features, and capacities) need to be controllable at either level. Ideally, a method would be provided to allow moving an individual licensing parameter on a specific licensed system from one level to the other.